<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Extensible Application Markup Language</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Extensible_Application_Markup_Language"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Extensible_Application_Markup_Language rootpage-Extensible_Application_Markup_Language skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Extensible Application Markup Language</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><table class="infobox float-right toptextcells hintergrundfarbe1" id="vorlage-infobox-dateiformatExtensible_Application_Markup_Language" summary="Infobox Dateiformat" style="width:23em; margin: 0 0 1em 1em; border:solid 1px #BBBBBB; font-size: 90%; padding:2px;">
<tbody><tr>
<th colspan="2">Extensible Application Markup Language
</th></tr>
<tr>
<td style="white-space: nowrap;"><a href="Dateinamenserweiterung" title="Dateinamenserweiterung">Dateiendung</a>:
</td>
<td><code style="margin:0.2em 0; padding:0;">.xaml</code>
</td></tr>
<tr>
<td style="white-space:nowrap;"><a href="Internet_Media_Type" title="Internet Media Type">MIME-Type</a>:
</td>
<td><code style="margin:0.2em 0; padding:0;">application/xaml+xml</code>
</td></tr>
<tr>
<td style="white-space: nowrap;">Entwickelt von:
</td>
<td><a href="Microsoft" title="Microsoft">Microsoft</a>
</td></tr>
<tr>
<td style="white-space: nowrap;">Erstveröffentlichung:
</td>
<td>Juli 2009
</td></tr>
<tr>
<td style="white-space: nowrap;">Art:
</td>
<td><a href="UIML" title="UIML">User Interface Markup Language</a>
</td></tr>
<tr>
<td style="white-space: nowrap;">Erweitert von:
</td>
<td><a href="Extensible_Markup_Language" title="Extensible Markup Language">XML</a>
</td></tr>
<tr>
<td colspan="2" class="hintergrundfarbe5" style="text-align:center;"><a rel="nofollow" class="external text" href="http://msdn.microsoft.com/en-us/library/ms752059.aspx">microsoft.com</a>
</td></tr>
<tr>
<td colspan="2" style="display:none">
<p>
</p><p><br>
</p>
</td></tr>
<tr>
<td colspan="2">
</td></tr></tbody></table>
<p><b>Extensible Application Markup Language</b> (<b>XAML</b>, ausgesprochen [<style data-mw-deduplicate="TemplateStyles:r227981795">
/* start https://de.wikipedia.org/ */
.mw-parser-output .IPA a{text-decoration:none}
/* end https://de.wikipedia.org/ */
</style><span class="navigation-not-searchable"><span class="IPA"><a href="Liste_der_IPA-Zeichen" title="Liste der IPA-Zeichen"><span title="Aussprache im Internationalen Phonetischen Alphabet (IPA)" lang="zxx">ˈzæ:mɛl</span></a></span></span>]) ist eine von <a href="Microsoft" title="Microsoft">Microsoft</a> entwickelte <a href="Computersprache#Beschreibungssprachen" title="Computersprache">Beschreibungssprache</a> zur Gestaltung <a href="Grafische_Benutzeroberfl%C3%A4che" title="Grafische Benutzeroberfläche">grafischer Benutzeroberflächen</a> sowie zur Definition von Workflows in der <a href="Windows_Workflow_Foundation" title="Windows Workflow Foundation">Windows Workflow Foundation</a> (WF). Zunächst wurde die neue deklarative Sprache für das <a href=".Net-Framework" title=".Net-Framework">.Net-Framework</a> 3.0 und 3.5 in <a href="Windows_Presentation_Foundation" title="Windows Presentation Foundation">Windows Presentation Foundation</a> (WPF) für WPF-Windows-Anwendungen entwickelt. In WPF wird XAML verwendet, weil dort Workflows wiederum mit XAML definiert werden können. XAML dient auch in <a href="Silverlight" class="mw-redirect" title="Silverlight">Silverlight</a>-Anwendungen und unter <a href="Microsoft_Windows_8" title="Microsoft Windows 8">Windows 8</a> in auf der <a href="Windows_Runtime" title="Windows Runtime">Windows Runtime</a> basierenden <a href="Windows_Store" class="mw-redirect" title="Windows Store">Windows-Store</a>-<a href="Mobile_App" title="Mobile App">Apps</a> dem Aufbau der grafischen Benutzeroberfläche.
</p>
<div class="mw-heading mw-heading2"><h2 id="Übersicht"><span id=".C3.9Cbersicht"></span>Übersicht</h2></div>
<p>XAML ist eine <a href="Extensible_Markup_Language" title="Extensible Markup Language">XML</a>-basierte Sprache, die verwendet wird, um grafische Elemente, Benutzeroberflächen, Verhaltensweisen, Animationen, Transformationen, Darstellung von Farbverläufen, Abspielen von Mediadateien und vieles mehr zu definieren. XAML wurde von Microsoft als die in der Windows Presentation Foundation, einer Desktop-orientierten Technologie, zu verwendende Auszeichnungssprache eingeführt. WPF stellt für 2D- und 3D-Objekte den Einsatz von Rotationen, Animationen und eine Reihe anderer Effekte und Funktionalitäten, die von XAML gerendert werden. XAML-Elemente können direkt <a href="Common_Language_Runtime" title="Common Language Runtime">Common-Language-Runtime</a>-Objektinstanzen (CLR) abbilden, wohingegen Attribute CLR-Eigenschaften und <a href="Ereignis_(Programmierung)" title="Ereignis (Programmierung)">Ereignisse</a> auf diese Objekte abbilden können. Bei einer üblichen Verwendung werden XAML-Dateien von optisch orientierten Design- und Entwicklerwerkzeugen wie <a href="Microsoft_Expression_Blend" class="mw-redirect" title="Microsoft Expression Blend">Microsoft Expression Blend</a>, <a href="Microsoft_Visual_Studio" class="mw-redirect" title="Microsoft Visual Studio">Microsoft Visual Studio</a>, XAML Pad oder dem Windows Workflow Foundation Visual Designer generiert.
</p><p>Obwohl XAML als wesentlicher Teil der <a href="Windows_Presentation_Foundation" title="Windows Presentation Foundation">WPF</a> eingeführt wurde, ist der XAML-Standard an sich nicht spezifisch mit der WPF oder .NET verknüpft. Mit XAML kann man unter Verwendung jeder beliebigen anderen <a href="Programmierschnittstelle" title="Programmierschnittstelle">Programmierschnittstelle</a> (englisch <i>application programming interface</i>, API) Anwendungen entwickeln, wobei XAML eine eigenständige Sprache darstellt. Der Hauptaspekt dieser Technologie ist die verringerte Komplexität, die Programme haben müssen, um XAML zu verarbeiten, weil es sich im Grunde um einfaches XML handelt. Da XAML auf XML basiert, können Entwickler und Designer gemeinsam Inhalte austauschen und bearbeiten, da der Code erst zur Laufzeit kompiliert wird.<sup id="cite_ref-Codeproject_1-0" class="reference"><a href="#cite_note-Codeproject-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-Werner_2-0" class="reference"><a href="#cite_note-Werner-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> Ebenso wie bei XML wird in XAML zwischen Groß- und Kleinschreibung unterschieden.
</p>
<div class="mw-heading mw-heading2"><h2 id="Designer-Entwickler-Arbeitsfluss">Designer-Entwickler-Arbeitsfluss</h2></div>
<p>Bei der Anwendungsentwicklung ist XAML sozusagen die gemeinsame Sprache zwischen Designer und Entwickler. Der Grafiker gestaltet mit den Designertools die Benutzerschnittstelle und generiert XAML-Code. Der Entwickler greift diesen XAML-Code auf und entwickelt in seiner Sprache der Wahl die Programmlogik dazu. XAML-Objekte, die vom Designer angelegt wurden, werden vom Entwickler mit programmlogischer Funktionalität versehen. Beide, Designer und Entwickler, können praktisch gleichzeitig am selben Projekt arbeiten und müssen nicht mehr über Umwege miteinander kommunizieren.
</p><p>In Silverlight- und WPF-Anwendungen wird diese Zusammenarbeit von Designer und Entwickler u. a. an der Verwendung von zwei unterschiedlichen Dateitypen für Benutzerschnittstelle und Programmlogik deutlich: die XAML-Datei (<a href="Dateinamenserweiterung" title="Dateinamenserweiterung">Dateierweiterung</a> .xaml), die die hinterlegten grafischen XAML-Beschreibungen enthält, und eine mit dieser Datei <a href="Filialdatei" title="Filialdatei">verbundene</a> CodeBehind-Datei, die die Programmlogik für die deklarativen XAML-Objekte enthält. In .NET sind die CodeBehind-Dateien je nach Sprachwahl mit entsprechenden Dateiendungen versehen: In <a href="C-Sharp" title="C-Sharp">C#</a> und Visual Basic sind es die Erweiterungen .xaml.cs bzw. .xaml.vb, in <a href="JavaScript" title="JavaScript">JavaScript</a> heißt die Dateiendung .xaml.js.<sup id="cite_ref-Werner_2-1" class="reference"><a href="#cite_note-Werner-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Verwendung">Verwendung</h2></div>
<div class="mw-heading mw-heading3"><h3 id="XAML_in_Silverlight">XAML in Silverlight</h3></div>
<p>In Webanwendungen wird XAML hauptsächlich in Form von Silverlight eingesetzt. Microsoft Silverlight ist eine veränderte, im Umfang reduzierte Untermenge von WPF. Während der Entwicklung wurde es WPF/E genannt, was für „Windows Presentation Foundation Everywhere“ stand. Microsoft Silverlight ermöglicht es, WPF-Anwendungen als <a href="Rich_Internet_Application" title="Rich Internet Application">Rich Internet Applications</a> mit demselben oder minimal verändertem Programmcode online verfügbar zu machen, ohne dass auf dem Clientcomputer das gesamte .NET Framework installiert sein muss. 3D-Funktionen werden derzeit noch nicht unterstützt, aber <a href="XML_Paper_Specification" title="XML Paper Specification">XPS</a>, vektorbasierte Grafiken und <a href="Hardwarebeschleunigung" title="Hardwarebeschleunigung">Hardwarebeschleunigung</a>, demzufolge ist das Rendern von Rich User Interfaces für Webseiten möglich.
</p><p>Eine Vielfalt von Medien kann nun nahtlos in die neuen Oberflächen eingegliedert werden einschließlich Audio, Video und 2D-Grafiken.
Wichtige grafische Gesichtspunkte durch XAML-Beschreibung sind:
</p>
<ul><li>Automatisches Layout</li>
<li>2D-Shape-Elemente (Rectangle, Ellipse etc.)</li>
<li>Farbverläufe mit GradientBrushes</li>
<li>Transformationen (Skalieren, Rotieren, Scheren, Matrizen)</li>
<li>Animationen (DoubleAnimation, ColorAnimation, PointAnimation)</li>
<li>Abspielen von Mediendateien<sup id="cite_ref-Codeproject_1-1" class="reference"><a href="#cite_note-Codeproject-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup></li></ul>
<div class="mw-heading mw-heading3"><h3 id="XAML_in_der_Windows_Runtime">XAML in der Windows Runtime</h3></div>
<p>Beginnend mit Windows 8 kommt XAML neben WPF für Windows Store-Apps, die unter der neuen Windows Runtime ausgeführt werden, zum Einsatz. XAML in der Windows Runtime ist, ebenso wie Microsoft Silverlight, eine veränderte und im Umfang angepasste Untermenge der Windows Presentation Foundation. Der Hauptunterschied zu den bisherigen Implementierungen besteht jedoch darin, dass es sich hierbei um eine völlig neue, auf nativem Code und COM basierende Schnittstelle handelt, die über sogenannte Projektionen für mehrere Programmiersprachen, darunter C++, C# und Visual Basic direkt verwendbar ist. Der Vorteil gegenüber WPF und Silverlight, die beide auf der Common Language Runtime aufbauen, ist eine gesteigerte Ausführungsgeschwindigkeit, da hier die Übersetzung in den nativen Maschinencode des Prozessors zur Laufzeit (Just-in-time-Kompilierung) entfällt.
</p><p>Windows Store-Apps werden derzeit immer als Vollbildanwendung ausgeführt und das vordefinierte Aussehen der Steuerelemente wurde für eine Bedienung per Touch optimiert, was sich in standardmäßig größeren und einfacher mit den Fingern zu bedienenden Elementen widerspiegelt.
</p>
<div class="mw-heading mw-heading2"><h2 id="Aufbau_&_Merkmale"><span id="Aufbau_.26_Merkmale"></span>Aufbau & Merkmale</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Gliederung">Gliederung</h3></div>
<p>XAML-Dateien sind hierarchisch strukturiert.
</p><p>Ein oder mehrere Elemente können, abhängig von ihrer Ordnung, das Layout und Verhalten der Oberfläche beeinflussen. Jedes Element besitzt nur ein Elternelement (englisch <i>parent</i>). Jedes Element kann eine unbegrenzte Anzahl von Kindelementen (englisch <i>children</i>) besitzen, nur bei einigen wenigen ist die Anzahl eingeschränkt, z. B. besitzt die <code>Scrollbar</code> kein einziges Kind. In allen XAML-Anwendungen ist das Wurzelobjekt typischerweise ein <code>Panel</code> (oder eines seiner sechs Unterarten), das sich um Positionierung und Rendern jeglichen Inhaltes kümmert. Ein <code>Panel</code> kann wiederum mehrere andere Panels beinhalten.
</p><p>Eigenschaften und Einstellungen z. B. einer <a href="Schaltfl%C3%A4che" title="Schaltfläche">Schaltfläche</a> werden wie bei XML bzw. <a href="Hypertext_Markup_Language" title="Hypertext Markup Language">HTML</a> im <a href="Tag_(Informatik)" title="Tag (Informatik)">Tag</a> als Attribute aufgeführt. Wie jede XML-Datei besitzt XAML ein Wurzel-Tag. Bei XAML nimmt man ein Vaterobjekt (z. B. ein <code><Window></code>), in das man weitere Kinder (also Elemente) einfügen kann. Für das Vaterobjekt muss das Wurzel-Tag entsprechende Attribute <code>xmlns</code> und <code>xmlns:x</code> besitzen, die dem Parser Informationen liefern über die zu verwendenden Namensräume.
</p>
<div class="mw-heading mw-heading3"><h3 id="XAML-Namensräume"><span id="XAML-Namensr.C3.A4ume"></span>XAML-Namensräume</h3></div>
<div class="mw-heading mw-heading4"><h4 id="Silverlight">Silverlight</h4></div>
<p>Wenn man in einer Silverlight-Anwendung ein Element wie <code><UserControl></code> in XAML verwendet, erkennt der Silverlight-<a href="Parser" title="Parser">Parser</a>, dass man eine Instanz der UserControl-<a href="Klasse_(Objektorientierung)" title="Klasse (Objektorientierung)">Klasse</a> erschaffen will. Aber er erkennt nicht zwingend welche UserControl-Klasse er verwenden soll. Man muss also einen Weg finden eine Silverlight-<a href="Namensraum" title="Namensraum">Namensrauminformation</a> anzugeben, um ein Element verwenden zu können.
</p>
<div class="mw-highlight mw-highlight-lang-xml mw-content-ltr" dir="ltr"><pre><span></span><span class="nt"><UserControl</span><span class="w"> </span><span class="na">x:Class=</span><span class="s">"SilverlightApplication1.Page"</span>
<span class="w"> </span><span class="na">xmlns=</span><span class="s">"http://schemas.microsoft.com/client/2007"</span>
<span class="w"> </span><span class="na">xmlns:x=</span><span class="s">"http://schemas.microsoft.com/winfx/2006/xaml"</span><span class="nt">></span>
<span class="w"> </span><span class="nt"><Grid</span><span class="w"> </span><span class="na">x:Name=</span><span class="s">"LayoutRoot"</span><span class="w"> </span><span class="na">Background=</span><span class="s">"White"</span><span class="nt">></span>
<span class="w"> </span><span class="nt"></Grid></span>
<span class="nt"></UserControl></span>
</pre></div>
<ul><li><b>http://schemas.microsoft.com/client/2007</b> ist der Kern des Silverlight-2-Namensraums. Er umfasst alle Silverlight-2-Klassen, einschließlich UserControl und Grid. Gewöhnlich wird der Namensraum ohne ein Präfix deklariert, somit wird er der Standard-Namensraum für das ganze Dokument. Das bedeutet jedes Element wird automatisch in diesem Namensraum platziert bis man es anderweitig spezifiziert.</li>
<li><b>http://schemas.microsoft.com/winfx/2006/xaml</b> ist der XAML-Namensraum. Er schließt verschiedene XAML-Merkmale ein, die einem erlauben Einfluss darauf zu nehmen wie das Dokument interpretiert wird. Dieser Namensraum ist an das Präfix <i>X</i> gebunden. Das bedeutet man kann ihn geltend machen, indem man das Namensraumpräfix vor den Elementnamen schreibt (z. B.: <<b>x:</b>ElementName>).<sup id="cite_ref-ProSilverlightC_3-0" class="reference"><a href="#cite_note-ProSilverlightC-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup></li></ul>
<div class="mw-heading mw-heading4"><h4 id="Windows_Presentation_Foundation">Windows Presentation Foundation</h4></div>
<p>In diesem Fall verwendet man nicht den Namensraum <b>xmlns=http://schemas.microsoft.com/client/2007</b>, da keine Silverlight-Anwendung angelegt wird, sondern man verweist lediglich auf den Presentation Core der Windows Presentation Foundation, <b>xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation</b>.<sup id="cite_ref-Werner_2-2" class="reference"><a href="#cite_note-Werner-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-highlight mw-highlight-lang-xml mw-content-ltr" dir="ltr"><pre><span></span><span class="nt"><Window</span><span class="w"> </span><span class="na">x:Class=</span><span class="s">"WpfApplication1.Window1"</span>
<span class="w"> </span><span class="na">xmlns=</span><span class="s">"http://schemas.microsoft.com/winfx/2006/xaml/presentation"</span>
<span class="w"> </span><span class="na">xmlns:x=</span><span class="s">"http://schemas.microsoft.com/winfx/2006/xaml"</span>
<span class="w"> </span><span class="na">Title=</span><span class="s">"Window1"</span><span class="w"> </span><span class="na">Height=</span><span class="s">"300"</span><span class="w"> </span><span class="na">Width=</span><span class="s">"300"</span><span class="nt">></span>
<span class="w"> </span><span class="nt"><Grid></span>
<span class="w"> </span><span class="nt"></Grid></span>
<span class="nt"></Window></span>
</pre></div>
<div class="mw-heading mw-heading4"><h4 id="Windows_Runtime">Windows Runtime</h4></div>
<p>Die für Windows Store-Apps unter Windows 8 verwendeten Namensräume entsprechen denen der Windows Presentation Foundation, mit dem Unterschied, dass als Standardelement für Benutzeroberflächen <code>Page</code> anstatt <code>Window</code> verwendet wird und dieses sich auf die Implementierung in der <a href="Windows_Runtime" title="Windows Runtime">Windows Runtime</a> (Windows.UI.Xaml) bezieht. Höhen- und Breitenangaben entfallen ebenso, da Windows Store-Apps immer als Vollbildanwendung ausgeführt werden.
</p>
<div class="mw-highlight mw-highlight-lang-xml mw-content-ltr" dir="ltr"><pre><span></span><span class="nt"><Page</span><span class="w"> </span><span class="na">x:Class=</span><span class="s">"HelloWorld.BlankPage"</span>
<span class="w"> </span><span class="na">xmlns=</span><span class="s">"http://schemas.microsoft.com/winfx/2006/xaml/presentation"</span>
<span class="w"> </span><span class="na">xmlns:x=</span><span class="s">"http://schemas.microsoft.com/winfx/2006/xaml"</span><span class="nt">></span>
<span class="w"> </span><span class="nt"><Grid></span>
<span class="w"> </span><span class="nt"></Grid></span>
<span class="nt"></Page></span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="Verknüpfung_von_GUI_und_Code"><span id="Verkn.C3.BCpfung_von_GUI_und_Code"></span>Verknüpfung von GUI und Code</h3></div>
<p>Um z. B. <a href="Schaltfl%C3%A4che" title="Schaltfläche">Schaltflächen</a> mit einer <a href="Prozedur_(Programmierung)" title="Prozedur (Programmierung)">Methode</a> zu verknüpfen schreibt man nun z. B. in Visual Basic oder <a href="C-Sharp" title="C-Sharp">C#</a> so genannte <i>partial classes</i>. Sie teilen sich denselben Namensraum. Der <a href="Compiler" title="Compiler">Compiler</a> erstellt dann die notwendigen Verknüpfungen. Wenn man – entgegen der klaren Empfehlung, Oberfläche und Code zu trennen – doch Code im XAML Dokument unterbringen möchte, kann man dies auch tun: <code><x:Code></code> leitet den entsprechenden Bereich ein. Damit der Parser nun die entsprechenden Zeilen nicht auch noch interpretiert, muss er unbedingt in <code><![CDATA[...]]></code> eingeschlossen sein (Beispiel aus msdn):<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-highlight mw-highlight-lang-xml mw-content-ltr" dir="ltr"><pre><span></span><span class="nt"><Canvas</span><span class="w"> </span><span class="err">xmlns...</span><span class="nt">></span>
<span class="w"> </span><span class="nt"><Button</span><span class="w"> </span><span class="na">Name=</span><span class="s">"button1"</span><span class="w"> </span><span class="na">Click=</span><span class="s">"Clicked"</span><span class="nt">></span>Click<span class="w"> </span>Me!<span class="nt"></Button></span>
<span class="w"> </span><span class="nt"><x:Code></span><span class="cp"><![CDATA[</span>
<span class="cp"> void Clicked(object sender, RoutedEventArgs e)</span>
<span class="cp"> {</span>
<span class="cp"> button1.Content = "Hello World";</span>
<span class="cp"> }</span>
<span class="cp"> ]]></span><span class="nt"></x:Code></span>
<span class="nt"></Canvas></span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="Styles_und_Templates">Styles und Templates</h3></div>
<p>In XAML ist es möglich, die Oberfläche sehr einfach an individuelle Bedürfnisse anzupassen. Dies fängt bei den Eigenschaften von UI-Elementen an, welche man leicht mit Styles ändern kann und geht weiter bis hin zur vollständigen Kontrolle über das Aussehen und Verhalten eines UI-Elementes durch die Templates.
</p>
<div class="mw-heading mw-heading4"><h4 id="Beispiel:_Style">Beispiel: Style</h4></div>
<p>Innerhalb eines XAML-Dokumentes definiert man sein eigenes <a href="Stylesheet" class="mw-redirect" title="Stylesheet">Stylesheet</a> für eine Schaltfläche:
</p>
<div class="mw-highlight mw-highlight-lang-xml mw-content-ltr" dir="ltr"><pre><span></span><span class="nt"><Style</span><span class="w"> </span><span class="na">def:Name=</span><span class="s">"MyStyle"</span><span class="nt">></span>
<span class="w"> </span><span class="nt"><Button</span><span class="w"> </span><span class="na">Background=</span><span class="s">"Red"</span><span class="w"> </span><span class="na">FontSize=</span><span class="s">"24"</span><span class="nt">/></span>
<span class="nt"></Style></span>
</pre></div>
<p>Beim Erstellen einer neuen Schaltfläche verweist man dann nur noch auf sein selbst erstelltes Stylesheet:
</p>
<div class="mw-highlight mw-highlight-lang-xml mw-content-ltr" dir="ltr"><pre><span></span><span class="nt"><Button</span><span class="w"> </span><span class="na">Style=</span><span class="s">"{MyStyle}"</span><span class="nt">></span>Styled<span class="nt"></Button></span>
</pre></div>
<div class="mw-heading mw-heading4"><h4 id="Beispiel:_Template">Beispiel: Template</h4></div>
<p>Innerhalb eines XAML-Dokumentes definiert man ein eigenes Control-Template für eine Schaltfläche:
</p>
<div class="mw-highlight mw-highlight-lang-xml mw-content-ltr" dir="ltr"><pre><span></span><span class="nt"><ControlTemplate</span><span class="w"> </span><span class="na">x:Key=</span><span class="s">"MyButtonTemplate"</span>
<span class="w"> </span><span class="na">TargetType=</span><span class="s">"{x:Type Button}"</span><span class="nt">></span>
<span class="w"> </span><span class="nt"><Border</span><span class="w"> </span><span class="na">BorderBrush=</span><span class="s">"{TemplateBinding BorderBrush}"</span>
<span class="w"> </span><span class="na">BorderThickness=</span><span class="s">"{TemplateBinding BorderThickness}"</span>
<span class="w"> </span><span class="na">Background=</span><span class="s">"{TemplateBinding Background}"</span><span class="nt">></span>
<span class="w"> </span><span class="cm"><!-- Der ContentPresenter zeigt den Inhalt an, welcher über TemplateBinding abgerufen wird --></span>
<span class="w"> </span><span class="nt"><ContentPresenter</span>
<span class="w"> </span><span class="na">Content=</span><span class="s">"{TemplateBinding Content}"</span>
<span class="w"> </span><span class="na">ContentTemplate=</span><span class="s">"{TemplateBinding ContentTemplate}"</span>
<span class="w"> </span><span class="na">Margin=</span><span class="s">"{TemplateBinding Padding}"</span>
<span class="w"> </span><span class="na">HorizontalAlignment=</span><span class="s">"{TemplateBinding</span>
<span class="s"> HorizontalContentAlignment}"</span>
<span class="w"> </span><span class="na">VerticalAlignment=</span><span class="s">"{TemplateBinding</span>
<span class="s"> VerticalContentAlignment}"</span><span class="w"> </span><span class="nt">/></span>
<span class="w"> </span><span class="nt"></Border></span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="Transformationen_und_Animationen">Transformationen und Animationen</h3></div>
<p>XAML unterstützt <a href="Konvertierung_(Informatik)" title="Konvertierung (Informatik)">Transformationen</a>, wie sie bereits aus <a href="Adobe_Flash" title="Adobe Flash">Flash</a> oder <a href="Scalable_Vector_Graphics" title="Scalable Vector Graphics">SVG</a> bekannt sind. Bei den Animationen sieht es dagegen etwas anders aus. Von Haus aus unterstützt die XAML-<a href="Syntax" title="Syntax">Syntax</a> keine weit reichende <a href="Animation" title="Animation">Animation</a>. Um dies dennoch zu bewerkstelligen, muss man die <code>Mapping</code>- und <code>xmlns</code>-Konstrukte verwenden, um einen eigenen <a href="Namensraum" title="Namensraum">Namensraum</a> spezifisch für <a href="Microsoft_Windows_Vista" title="Microsoft Windows Vista">Windows Vista</a> zu laden:
</p>
<div class="mw-highlight mw-highlight-lang-xml mw-content-ltr" dir="ltr"><pre><span></span><span class="cp"><?Mapping XmlNamespace="animC" ClrNamespace="MSAvalon.Windows.Media.Animation" Assembly="PresentationCore" ?></span>
<span class="cp"><?Mapping XmlNamespace="animF" ClrNamespace="MSAvalon.Windows.Media.Animation" Assembly="PresentationFramework" ?></span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="Document_Services">Document Services</h3></div>
<p>XAML bietet mehrere Merkmale, die es ermöglichen, Dokumente besser zu betrachten, navigieren und paginieren. Für diesen Zweck stehen mehrere Kontrollleisten bereit, die bei Bedarf aktiviert werden können. Dazu gehört eine Seitenzahlanzeige, Vor- und Zurück-Schaltfläche etc., die der <code>PageViewer</code> anbietet.
</p><p>Darüber hinaus kann man mit dem <i>Document Layout Service</i> Texte mit einfachen Tags versehen, um jederzeit auf jedem Bildschirm ein angemessenes und leicht zu lesendes <a href="Layout" title="Layout">Layout</a> zu installieren.
</p>
<div class="mw-heading mw-heading2"><h2 id="Vergleiche_mit_anderen_XML-basierten_(Programmier-)Sprachen"><span id="Vergleiche_mit_anderen_XML-basierten_.28Programmier-.29Sprachen"></span>Vergleiche mit anderen XML-basierten (Programmier-)Sprachen</h2></div>
<p>Dem deklarativen Konzept von XAML und der Vereinigung von XML-codierten Objekten ähnlich arbeitet die Sprache LZX (<a href="OpenLaszlo" title="OpenLaszlo">OpenLaszlo</a>). Hier werden die Methoden und Eigenschaften, sowie die <a href="Ereignis_(Programmierung)" title="Ereignis (Programmierung)">Ereignisbehandlung</a> noch konsequenter in die Tag-Struktur mit einbezogen. Während bei XAML der .NET-Compiler Oberflächen mit den Methoden bzw. der Ereignisbehandlung zusammenbindet, wird bei OpenLaszlo als Script-Sprache <a href="JavaScript" title="JavaScript">JavaScript</a> eingesetzt und eine lauffähige <a href="Adobe_Flash" title="Adobe Flash">Adobe-Flash</a>-Datei (oder wahlweise DHTML) erzeugt.
</p><p>Codebeispiel (vergleiche oben):
</p>
<div class="mw-highlight mw-highlight-lang-xml mw-content-ltr" dir="ltr"><pre><span></span><span class="nt"><canvas</span><span class="w"> </span><span class="na">debug=</span><span class="s">"true"</span><span class="nt">></span>
<span class="w"> </span><span class="nt"><button</span><span class="w"> </span><span class="na">name=</span><span class="s">"button1"</span><span class="w"> </span><span class="na">text=</span><span class="s">"Click me !"</span><span class="nt">></span>
<span class="w"> </span><span class="nt"><handler</span><span class="w"> </span><span class="na">name=</span><span class="s">"onclick"</span><span class="nt">></span>
<span class="w"> </span>parent.button1.setAttribute("text","Hello,<span class="w"> </span>World<span class="w"> </span>!");<span class="w"> </span>//<span class="w"> </span>JavaScript-Code
<span class="w"> </span><span class="nt"></handler></span>
<span class="w"> </span><span class="nt"></button></span>
<span class="nt"></canvas></span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="Siehe_auch">Siehe auch</h2></div>
<ul><li><a href="XML_User_Interface_Language" title="XML User Interface Language">XML User Interface Language</a> (XUL)</li>
<li><a href="JavaFX#FXML" title="JavaFX">FXML</a> Deklarative GUI-Beschreibung für <a href="JavaFX" title="JavaFX">JavaFX</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Literatur">Literatur</h2></div>
<ul><li>Matthew MacDonald: <i>Pro WPF in C# 2008</i>. Springer, 2008. ISBN 978-1-59059-955-6</li>
<li>Matthew MacDonald: <i>Pro Silverlight in C# 2008</i>. Apress, 2008. ISBN 978-1-59059-949-5</li>
<li>M. Werner und B. Rieger: <i>Interaktive Webanwendungen mit Silverlight 2 entwickeln</i>. Data Becker, 2008. ISBN 978-3-8158-3009-3</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://msdn.microsoft.com/de-de/library/ms752059.aspx">XAML in der MSDN Library</a></li>
<li><a rel="nofollow" class="external text" href="http://msdn.microsoft.com/en-us/library/ms747122.aspx">XAML in der MSDN Library</a> (englisch)</li>
<li><a rel="nofollow" class="external text" href="http://xml.coverpages.org/ms-xaml.html">Coverpages.org</a> (englisch) – Artikel, Papers und News zu XAML</li></ul>
<p><b>Anleitungen</b>
</p>
<ul><li><a rel="nofollow" class="external text" href="http://www.scriptol.com/silverlight/">Scriptol.com</a> (englisch) – Anleitungen zu XAML</li>
<li><a rel="nofollow" class="external text" href="http://www.codeproject.com/KB/WPF/GuidedTourWPF_1.aspx">Codeproject.com</a> (englisch) – Anleitungen zu WPF und XAML</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Quellen">Quellen</h2></div>
<ol class="references">
<li id="cite_note-Codeproject-1"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-Codeproject_1-0">a</a></sup> <sup><a href="#cite_ref-Codeproject_1-1">b</a></sup></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="http://www.codeproject.com/KB/silverlight/xaml.aspx"><i>www.codeproject.com.</i></a><span class="Abrufdatum"> Abgerufen am 15. März 2009</span>.</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fde.wikipedia.org%3AExtensible+Application+Markup+Language&rft.title=www.codeproject.com&rft.description=www.codeproject.com&rft.identifier=&rft.date="> </span></span>
</li>
<li id="cite_note-Werner-2"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-Werner_2-0">a</a></sup> <sup><a href="#cite_ref-Werner_2-1">b</a></sup> <sup><a href="#cite_ref-Werner_2-2">c</a></sup></span> <span class="reference-text">M. Werner und B. Rieger: <i>Interaktive Webanwendungen mit Silverlight 2 entwickeln.</i> 2008, ISBN 978-3-8158-3009-3.</span>
</li>
<li id="cite_note-ProSilverlightC-3"><span class="mw-cite-backlink"><a href="#cite_ref-ProSilverlightC_3-0">↑</a></span> <span class="reference-text">Matthew MacDonald: <i>Pro Silverlight in C# 2008</i>. 2008 ISBN 978-1-59059-949-5</span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20150403183319/http://msdn.microsoft.com/de-de/library/ms256076(VS.80).aspx"><i>CDATA-Abschnitte.</i></a> Microsoft, archiviert vom <style data-mw-deduplicate="TemplateStyles:r250917974">
/* start https://de.wikipedia.org/ */
.mw-parser-output .dewiki-iconexternal>a{background-position:center right!important;background-repeat:no-repeat!important}body.skin-minerva .mw-parser-output .dewiki-iconexternal>a{background-image:url("./_mw_/OOjs_UI_icon_external-link-ltr-progressive.svg")!important;background-size:10px!important;padding-right:13px!important}body.skin-timeless .mw-parser-output .dewiki-iconexternal>a,body.skin-monobook .mw-parser-output .dewiki-iconexternal>a{background-image:url("./_mw_/MediaWiki_external_link_icon.svg")!important;padding-right:13px!important}body.skin-vector .mw-parser-output .dewiki-iconexternal>a{background-image:url("./_mw_/Link.ernal-small-ltr-progressive.svg")!important;background-size:0.857em!important;padding-right:1em!important}
/* end https://de.wikipedia.org/ */
</style><span class="dewiki-iconexternal"><a class="external text" href="https://redirecter.toolforge.org/?url=http%3A%2F%2Fmsdn.microsoft.com%2Fde-de%2Flibrary%2Fms256076%28VS.80%29.aspx">Original</a></span> am <span style="white-space:nowrap;">3. April 2015</span><span>;</span><span class="Abrufdatum"> abgerufen am 2. April 2019</span>.</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fde.wikipedia.org%3AExtensible+Application+Markup+Language&rft.title=CDATA-Abschnitte&rft.description=CDATA-Abschnitte&rft.identifier=https%3A%2F%2Fweb.archive.org%2Fweb%2F20150403183319%2Fhttp%3A%2F%2Fmsdn.microsoft.com%2Fde-de%2Flibrary%2Fms256076%28VS.80%29.aspx&rft.publisher=Microsoft&rft.date=&rft.source=http://msdn.microsoft.com/de-de/library/ms256076(VS.80).aspx"> </span></span>
</li>
</ol></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2024-11-04" href="https://de.wikipedia.org/wiki/?title=Extensible_Application_Markup_Language&oldid=250028615">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>